Forum des exercices du projet Zuul

Exercice 7.23

  
 
Avatar anonfirstname2 anonlastname2
Exercice 7.23
par anonfirstname2 anonlastname2, vendredi 11 avril 2014, 23:11
 
  1. Lire la suite du chapitre 7 [ci-joint] (si possible en anglais, sinon en français).

  2. Implement a back command. This command does not have a second word.
    Entering the back command takes the player into the previous Room he/she was in.

 

Avatar anonfirstname5 anonlastname5
Re: Exercice 7.23
par anonfirstname5 anonlastname5, mardi 26 mars 2013, 14:23
 

Bonjour j'ai un problème, je ne trouve pas comment implanter la commande "back", je ne sais pas par ou commencer. 

Avatar anonfirstname2 anonlastname2
Re: Exercice 7.23
par anonfirstname2 anonlastname2, mardi 26 mars 2013, 17:18
 

Puisque l'énoncé dit qu'il faut pouvoir retourner dans la pièce précédente, il serait bon de commencer par déclarer une variable pour mémoriser cette pièce précédente.

Ensuite, à chaque changement de pièce, il faut faire évoluer la valeur de cette variable.

Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, jeudi 31 mars 2016, 17:43
 
Un étudiant a écrit :
 
Bonjour,

je suis bloqué au niveau de la commande back au 7.23 : BlueJ compile mais au moment où je tape "go" sans second mot dans la fenêtre de jeu j'ai une autre fenêtre qui s'affiche avec une erreur du type "java.util.NullPointerException" je ne comprends pas pourquoi ...

Voici mon code

.../...
    code supprimé pour ne pas influencer les futurs lecteurs
.../...

Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, vendredi 29 novembre 2013, 10:44
 

Vous êtes dans le processus normal de développement d'un programme : une fois que vous n'avez plus d'erreurs de compilation, vous exécutez votre programme et il peut se produire une erreur à l'exécution.

Dans votre cas, votre programme veut faire un appel du genre objet.methode(); mais objet vaut null. La machine virtuelle Java ne peut donc pas exécuter la méthode puisqu'on ne lui fournit pas d'objet courant. Elle s'arrête alors en lançant une Exception (ici, une NullPointerException) et en affichant tous les détails dans la fenêtre Terminal de BlueJ.

Il vous faut maintenant regarder précisément à quel endroit se trouve le problème : les affichages dans le Terminal vous indique le fichier .java concerné et le numéro de ligne (il est conseillé de faire afficher les numéros de lignes dans BlueJ : menu Tools / Preferences... / Editor / Display line numbers / Ok). Vous pouvez aussi cliquer directement sur l'exception.

Il ne reste plus qu'à comprendre pourquoi objet est null à ce moment-là : n'a-t-il pas été initialisé ? ou bien sa valeur provient-elle d'une fonction qui a retourné null ? ou ...

Avatar Emilien FERRANDI
Re: Exercice 7.23
par Emilien FERRANDI, mardi 14 avril 2015, 16:50
 

Bonjour Monsieur. 

Je ne comprend pas très bien si il faut faire absolument une méthode leaveRoom, ou si l'on peut faire la méthode back sans. 

Personnellement, j'ai fait la méthode back sans utiliser et sans créer la méthode leaveRoom.

Est-ce dérangeant ?

Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, mardi 14 avril 2015, 17:32
 

Relisez le paragraphe "7.11.4 Cohesion for reuse".

On vous y explique justement pourquoi il ne faut pas programmer de méthode leaveRoom ...

Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, mercredi 5 avril 2017, 01:00
 

Un étudiant a écrit :

Bonjour,


Après avoir réalisé une première version de la procédure back() de l'éxercice 7.23, permettant de revenir dans la room précédente, je me pose une question.

 private void back()
    {
        ... code supprimé pour ne pas influencer les futurs lecteurs ...
    }//back()


En dehor de la procédure, j'ai bien sur déclaré un attribut aBackRoom de type Room et modifier la méthode interpretCommand en conséquence. 

La question que je me pose est la suivante: Comment faire en sorte d'obtenir le même résultat sans recopier, dans le "else" la meme partie de code que dans goRoom (et ainsi éviter la duplication de code) ? 
Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, jeudi 31 mars 2016, 17:48
 

Vous avez sans doute supprimé la méthode printLocationInfo, qui remplacerait avantageusement les 3 dernières lignes du else.
Je suppose que ces lignes sont également dupliquées dans printWelcome ...

Avatar Mathias BOUTIÉ
Re: Exercice 7.23
par Mathias BOUTIÉ, jeudi 27 octobre 2016, 11:11
 

Bonjour,

La méthode Back doit retourner à la Room précédente, mais si on l'utilise 2 fois, doit on rester sur place ou remonter de 2 Rooms ? Doit-on garder tout son parcours en mémoire ou simplement une seule Room ?

Merci d'avance.

Avatar Denis BUREAU
Re: Exercice 7.23
par Denis BUREAU, jeudi 27 octobre 2016, 12:14
 

Pour l'exercice 7.23, il s'agit juste de mémoriser la pièce précédente et de pouvoir y retourner.

Vos questions sont justement l'objet des exercices 7.24, 7.25 et 7.26.

Si vous avez encore vos questions après avoir lu ces 3 exercices, n'hésitez pas !